Several methods and tools are known in the art for discovering program errors (“bugs”) in parallel or concurrent software programs. For example, IBM Corp. (Armonk, N.Y.) offers a tool called ConcurrentTesting (ConTest) for exposing and eliminating concurrency-related bugs in parallel and distributed Java™ programs. Additional details regarding ConTest are available at www.alphaworks.ibm.com/tech/contest.
In some cases, program errors can be found using a desk checking process. Desk checking is a manual process, in which one or more reviewers go through a software program in order to locate program errors. In some cases, desk checking can be performed in the early stages of software design, before the entire software code is available. Manual desk checking techniques are described, for example, by Hoare in “Structured Programming in Introductory Programming Courses,” Infotech International State of the Art Report on Structured Programming, 1976, pages 255-263.
The desk checking concept was extended to concurrent and distributed software programs by Hayardeny et al. in a paper entitled “Concurrent and Distributed Desk Checking,” Workshop on Parallel and Distributed Systems: Testing and Debugging, Santa Fe, N. Mex., Apr. 30, 2004 (PADTAD 2004).